Updating element properties based on distance between elements in virtual conference

ABSTRACT

Aspects of the present disclosure involve a system comprising a computer-readable storage medium storing a program and method for updating element properties based on distances between elements in a virtual conference. The program and method provide, in association with designing a room, an interface for specifying how a first element in the room affects at least one property value of a second element, based on distance between the two elements; receive user selection of parameter values specifying how the first element affects the at least one property value of the second element based on the distance; provide a virtual conference between plural participants within the room including the first and second elements; update the at least one property value of the second element based on a change in distance between the first and second elements, and on the parameter values; and provide for updated display of the second element.

CROSS-REFERENCE TO RELATED APPLICATION

This patent application claims the benefit of U.S. Provisional PatentApplication No. 63/168,087, filed Mar. 30, 2021, entitled “UPDATINGELEMENT PROPERTIES BASED ON DISTANCE BETWEEN ELEMENTS IN VIRTUALCONFERENCE”, which is incorporated by reference herein in its entirety.

TECHNICAL FIELD

The present disclosure relates generally to virtual conferencingsystems, including updating element properties based on distancesbetween elements in a virtual conference.

BACKGROUND

A virtual conferencing system provides for the reception andtransmission of audio and video data between devices, for communicationbetween device users in real-time.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

In the drawings, which are not necessarily drawn to scale, like numeralsmay describe similar components in different views. To easily identifythe discussion of any particular element or act, the most significantdigit or digits in a reference number refer to the figure number inwhich that element is first introduced. Some nonlimiting examples areillustrated in the figures of the accompanying drawings in which:

FIG. 1 is a diagrammatic representation of a networked environment inwhich the present disclosure may be deployed, in accordance with someexamples.

FIG. 2 is a diagrammatic representation of a virtual conferencingsystem, in accordance with some examples, that has both client-side andserver-side functionality.

FIG. 3 is a diagrammatic representation of a data structure asmaintained in a database, in accordance with some examples.

FIG. 4 illustrates a virtual space design interface with interfaceelements for designing a virtual space, in accordance with some exampleembodiments.

FIG. 5 illustrates a virtual space navigation interface with interfaceelements to navigate between the rooms of a virtual space and toparticipate in virtual conferencing with respect to the rooms, inaccordance with some example embodiments.

FIG. 6 is an interaction diagram illustrating a process for updatingelement properties based on distances between elements in a virtualconference, in accordance with some example embodiments.

FIG. 7 illustrates a property affector interface for specifying how anelement affects property values of other elements, in accordance withsome example embodiments.

FIG. 8 illustrates a current room interface with elements designed toaffect the property values of other elements, in accordance with someexample embodiments.

FIG. 9 is a flowchart illustrating a process for updating elementproperties based on distances between elements in a virtual conference,in accordance with some example embodiments.

FIG. 10 is a diagrammatic representation of a machine in the form of acomputer system within which a set of instructions may be executed forcausing the machine to perform any one or more of the methodologiesdiscussed herein, in accordance with some examples.

FIG. 11 is a block diagram showing a software architecture within whichexamples may be implemented.

DETAILED DESCRIPTION

A virtual conferencing system provides for the reception andtransmission of audio and video data between devices, for communicationbetween device users in real-time. The virtual conferencing system asdescribed herein allows a user to design or select a virtual space withone or more rooms for real-time communication. A given room may includedifferent elements, such as participant video feeds, objects (e.g.,lights or microphones) and shapes. The elements may be movable withinthe room, such as by a drag gesture. When the distance between elementschanges, it may be desirable to update the presentation elements. Forexample, if a light element approaches a shape element, it may bedesirable to brighten the shape element to create the appearance ofapproaching light.

The disclosed embodiments provide for a user to design a room to includedifferent elements. The user specifies parameters defining how a firstelement in the room affects the property value(s) (e.g., brightness,audio volume) of a second element in the room. During a virtualconference within the room, the property value(s) of the second elementare updated based on detected changes in the distance between the firstelement and the second element. Presentation of the second element ischanged (e.g., the second element becomes brighter, louder, etc.) basedon the updated property value(s). By virtue of allowing a user tospecify such parameters within during design, it is possible tofacilitate updating the presentation of elements as they move relativeto one another during virtual conferencing.

FIG. 1 is a block diagram showing an example virtual conferencing system100 for exchanging data over a network. The virtual conferencing system100 includes multiple instances of a client device 102, each of whichhosts a number of applications, including a virtual conference client104 and other application(s) 106. Each virtual conference client 104 iscommunicatively coupled to other instances of the virtual conferenceclient 104 (e.g., hosted on respective other client devices 102), avirtual conference server system 108 and third-party servers 110 via anetwork 112 (e.g., the Internet). A virtual conference client 104 canalso communicate with locally-hosted applications 106 using ApplicationsProgram Interfaces (APIs).

The virtual conferencing system 100 provides for the reception andtransmission of audio, video, image, text and/or other signals by userdevices (e.g., at different locations), for communication between usersin real-time. In some cases, two users may utilize virtual conferencingto communicate with each other in one-to-one communication at theirrespective devices. In other cases, multiway virtual conferencing may beutilized by more than two users to participate in a real-time, groupconversation. Thus, multiple client devices 102 may participate invirtual conferencing, for example, with the client devices 102participating in a group conversation in which audio-video contentstreams and/or message content (e.g., text, images) are transmittedbetween the participant devices.

A virtual conference client 104 is able to communicate and exchange datawith other virtual conference clients 104 and with the virtualconference server system 108 via the network 112. The data exchangedbetween virtual conference clients 104, and between a virtual conferenceclient 104 and the virtual conference server system 108, includesfunctions (e.g., commands to invoke functions) as well as payload data(e.g., video, audio, other multimedia data, text).

The virtual conference server system 108 provides server-sidefunctionality via the network 112 to a particular virtual conferenceclient 104. For example, with respect to transmitting audio and/or videostreams, the virtual conference client 104 (e.g., installed on a firstclient device 102) may facilitate in transmitting streaming content tothe virtual conference server system 108 for subsequent receipt by otherparticipant devices (e.g., one or more second client devices 102)running respective instances of the virtual conference client 104.

The streaming content can correspond to audio and/or video contentcaptured by sensors (e.g., microphones, video cameras) on the clientdevices 102, for example, corresponding to real-time video and/or audiocapture of the users (e.g., faces) and/or other sights and soundscaptured by the respective device. The streaming content may besupplemented with other audio/visual data (e.g., animations, overlays,emoticons and the like) and/or message content (e.g., text, stickers,emojis, other image/video data), for example, in conjunction withextension applications and/or widgets associated with the virtualconference client 104.

While certain functions of the virtual conferencing system 100 aredescribed herein as being performed by either a virtual conferenceclient 104 or by the virtual conference server system 108, the locationof certain functionality either within the virtual conference client 104or the virtual conference server system 108 may be a design choice. Forexample, it may be technically preferable to initially deploy certaintechnology and functionality within the virtual conference server system108 but to later migrate this technology and functionality to thevirtual conference client 104 where a client device 102 has sufficientprocessing capacity.

The virtual conference server system 108 supports various services andoperations that are provided to the virtual conference client 104. Suchoperations include transmitting data to, receiving data from, andprocessing data generated by the virtual conference client 104. Thisdata may include the above-mentioned streaming content and/or messagecontent, client device information, and social network information, asexamples. Data exchanges within the virtual conferencing system 100 areinvoked and controlled through functions available via user interfaces(UIs) of the virtual conference client 104.

Turning now specifically to the virtual conference server system 108, anApplication Program Interface (API) server 114 is coupled to, andprovides a programmatic interface to, application servers 118. Theapplication servers 118 are communicatively coupled to a database server124, which facilitates access to a database 126 that stores dataassociated with virtual conference content processed by the applicationservers 118. Similarly, a web server 116 is coupled to the applicationservers 118, and provides web-based interfaces to the applicationservers 118. To this end, the web server 116 processes incoming networkrequests over the Hypertext Transfer Protocol (HTTP) and several otherrelated protocols.

The Application Program Interface (API) server 114 receives andtransmits virtual conference data (e.g., commands, audio/video payloads)between the client device 102 and the application servers 118.Specifically, the Application Program Interface (API) server 114provides a set of interfaces (e.g., routines and protocols) that can becalled or queried by the virtual conference client 104 in order toinvoke functionality of the application servers 118. The ApplicationProgram Interface (API) server 114 exposes various functions supportedby the application servers 118, including account registration, loginfunctionality, the streaming of audio and/or video content, and/or thesending and retrieval of message content, via the application servers118, from a particular virtual conference client 104 to another virtualconference client 104, the retrieval of a list of contacts of a user ofa client device 102, the addition and deletion of users (e.g., contacts)to a user graph (e.g., a social graph), and opening an application event(e.g., relating to the virtual conference client 104).

The application servers 118 host a number of server applications andsubsystems, including for example a virtual conference server 120 and asocial network server 122. The virtual conference server 120 implementsa number of virtual conference processing technologies and functions,particularly related to the aggregation and other processing of content(e.g., streaming content) included in audio-video feeds received frommultiple instances of the virtual conference client 104. Other processorand memory intensive processing of data may also be performedserver-side by the virtual conference server 120, in view of thehardware requirements for such processing.

The social network server 122 supports various social networkingfunctions and services and makes these functions and services availableto the virtual conference server 120. To this end, the social networkserver 122 maintains and accesses a user graph 304 (as shown in FIG. 3 )within the database 126. Examples of functions and services supported bythe social network server 122 include the identification of other usersof the virtual conferencing system 100 with which a particular user hasrelationships (e.g., contacts such as friends, colleagues, teachers,students, and the like).

In one or more embodiments, a user interacting via the virtualconference client 104 running on a first client device 102 may selectand invite participant(s) to a virtual conference. For example, theparticipants may be selected from contacts maintained by the socialnetwork server 122. In another example, the participants may be selectedfrom contacts included within a contact address book stored inassociation with the first client device 102 (e.g., in local memory orin a cloud-based user account). In another example, the participants maybe selected by the user manually entering email addresses and/or phonenumbers of the participants.

The user at the first client device 102 may initiate the virtualconference by selecting an appropriate user interface element providedby the virtual conference client 104, thereby prompting the invitedparticipants, at their respective devices (e.g., one or more secondclient devices 102), to accept or decline participation in the virtualconference. When the participant(s) have accepted the invitation (e.g.,via the prompt), the virtual conference server system 108 may perform aninitialization procedure in which session information is publishedbetween the participant client devices 102, including the user whoprovided the invite. Each of the participant client devices 102 mayprovide respective session information to the virtual conference serversystem 108, which in turn publishes the session information to the otherparticipant client devices 102. The session information for each clientdevice 102 may include content stream(s) and/or message content that ismade available by the client device 102, together with respectiveidentifiers for the content stream(s) and/or message content.

As described below with respect to FIG. 2 , the virtual conference maycorrespond to a virtual space which includes one or more rooms (e.g.,virtual rooms). The virtual space and its corresponding rooms may havebeen created at least in part by the inviting user and/or by otherusers. In this manner, an end user may act as an administrator, whocreates their own virtual spaces with rooms, and/or designs a virtualspace based on preset available rooms.

FIG. 2 is a block diagram illustrating further details regarding thevirtual conferencing system 100, according to some examples.Specifically, the virtual conferencing system 100 is shown to comprisethe virtual conference client 104 and the application servers 118. Thevirtual conferencing system 100 embodies a number of subsystems, whichare supported on the client-side by the virtual conference client 104and on the server-side by the application servers 118. These subsystemsinclude, for example, a virtual space creation system 202 whichimplements a virtual space design interface 204, and a virtual spaceparticipation system 206 which implements a virtual space navigationinterface 208.

The virtual space creation system 202 provides for a user to design oneor more virtual space(s) in which participants may engage in virtualconferencing. In one or more embodiments, a virtual space corresponds toan environment with one or more rooms configured to accommodate virtualconferencing.

The virtual space may be created and/or selected (e.g., from among a setof predefined virtual spaces with rooms) by an end user who wishes toinvite other users for virtual conferencing. In addition, the individualrooms of a virtual space may be newly-created and/or selected (e.g.,from among a set of predefined rooms) by the end user. In one or moreembodiments, the virtual space creation system 202 includes a virtualspace design interface 204, which is usable by the end user to design avirtual space, including creating and/or selecting rooms for includingin the virtual space.

As discussed below with respect to FIG. 4 , the virtual space designinterface 204 enables an end user (e.g., an administrator) to selectand/or position multiple elements for including in a room. Examples ofelements include, but are not limited to, participant video elements(e.g., for displaying the respective video feeds of participants), chatinterfaces (e.g., for participants to provide text-based messages,stickers and/or reactions within a room), breakout buttons (e.g., forshuffling from a first room to one or more second rooms), and/or otheruser-definable elements for performing certain actions (e.g., speakinginto a virtual microphone, querying an administrator via a button, andthe like).

The virtual space participation system 206 is configured to performvirtual conferencing among participants within a virtual space. Theparticipants may include the end user (e.g., administrator) who createdthe virtual space, as well as those users who were invited toparticipate in virtual conferencing with respect to the virtual spacecreated/selected by the end user. The virtual space participation system206 includes a virtual space navigation interface 208 (e.g., discussedbelow with respect to FIG. 5 ) that allows participants to navigatebetween the rooms of a virtual space, and to participate in virtualconferencing with respect to the rooms.

In one or more embodiments, the virtual space creation system 202 andthe virtual space participation system 206 provide for an end user(e.g., an administrator) to create different types of environments(e.g., virtual spaces with rooms) for virtual conferencing, and forparticipants to engage in virtual conferencing within such environments.Examples of such virtual conferencing include, but are not limited to:business meetings, seminars, presentations, classroom lectures, teacheroffice hours, concerts, reunions, virtual dinners, escape rooms, and thelike.

FIG. 3 is a schematic diagram illustrating data structures 300, whichmay be stored in the database 126 of the virtual conference serversystem 108, according to certain examples. While the content of thedatabase 126 is shown to comprise a number of tables, it will beappreciated that the data could be stored in other types of datastructures (e.g., as an object-oriented database).

The database 126 includes profile data 302, a user graph 304 and a usertable 306 relating to the users (participants) of the virtualconferencing system 100. The user table 306 stores user data, and islinked (e.g., referentially) to the user graph 304 and the profile data302. Each user of the virtual conferencing system 100 is associated witha unique identifier (email address, telephone number, social networkidentifier, etc.).

The user graph 304 stores (e.g., in conjunction with the social networkserver 122) information regarding relationships and associations betweenusers. Such relationships may be social, professional (e.g., work at acommon corporation or organization) interested-based or activity-based,merely for example. As noted above, the user graph 304 may be maintainedand accessed at least in part by the social network server 122.

The profile data 302 stores multiple types of profile data about aparticular user. The profile data 302 may be selectively used andpresented to other users of the virtual conferencing system 100, basedon privacy settings specified by a particular user. The profile data 302includes, for example, a user name, telephone number, email address,and/or settings (e.g., notification and privacy settings), as well as auser-selected avatar representation.

The database 126 further includes a virtual spaces table 308. As notedabove, a virtual space corresponds to an environment with one or morerooms configured to accommodate virtual conferencing. A virtual spacemay be newly-created by a user, or may be included within one or moresets of public virtual spaces made available (e.g., by other users,system administrators, and the like) for virtual conferencing. Thevirtual spaces table 308 stores information representing the one or moresets of public virtual spaces, as well as any private virtual space(s)created by a user (e.g., in a case where the particular user did notmake such virtual space(s) public).

In one or more embodiments, the virtual spaces table 308 storesassociations between its virtual spaces and users (e.g., within the usertable 306) who selected those virtual spaces. In this manner, it ispossible for a particular user to have one or more virtual spacesassociated therewith. Moreover, the database 126 includes a rooms table310 which may be associated with the virtual spaces within the virtualspaces table 308. As noted above, a room may be newly-created by a user,or may be included within one or more sets (e.g., galleries) of publicrooms made available for user selection. The rooms table 310 storesinformation representing the one or more sets of rooms, as well as anyprivate room(s) created by the user (e.g., in a case where theparticular user did not make such room(s) public). The storedinformation is usable by the virtual conferencing system 100 to createthe corresponding rooms for use in a virtual space. In one or moreembodiments, the stored information may further include recordings(e.g., audio and/or video recordings) of a particular virtualconference, for subsequent playback by corresponding participants.

FIG. 4 illustrates a virtual space design interface 204 with interfaceelements for designing a virtual space, in accordance with some exampleembodiments. Designing the virtual space may include creation and/orselection of rooms for including in the virtual space. The virtual spacedesign interface 204 includes a menu interface 402, a room elementsinterface 404, an element properties interface 406, a controls interface408, a room list interface 410, a room canvas interface 412, and anadministrator name 414. It is noted that elements 402-414 correspond toan example of interface elements for the virtual space design interface204, and that additional, fewer and/or different interface elements maybe used.

An administrator (e.g., corresponding to administrator name 414) may usethe various interface elements to design a virtual space. In one or moreembodiments, the menu interface 402 includes user-selectable categories(e.g., menu headings) relating to a virtual space (e.g., “workspace”),rooms within the virtual space, and/or elements within a room. Forexample, the workspace category is user-selectable for presentingoptions (e.g., via a drop-down list) to manage settings for the virtualspace, manage invites for the virtual space, manage versions of avirtual space, publish the virtual space (e.g., for future use byusers), manage virtual space publications, and/or to start/managerecordings (e.g., audio and/or video recordings) with respect to thevirtual space.

The room category of the menu interface 402 is user-selectable forpresenting options (e.g., via a drop-down list) to manage settings for aroom within the virtual space, set a room background, set an order forthe rooms listed in the room list interface 410, create a new room,import a room from a set of available rooms, remove a room, publish aroom, manage room publications, and/or to start/manage recordings withrespect to a room.

In addition, the element category is user-selectable for presentingoptions (e.g., via a drop-down list) to insert elements into a room,insert shapes into a room, foreground/background elements,arrange/position elements, and/or group elements. Examples of elementsinclude, but are not limited to: an action button, analog clock,audience question board, backpack item, breakout button, chat, closedcaption display, closed caption input, countdown, clock, digital clock,doorbell, double-sided image, feedback, image, multiuser video chat,music, participant audio mixer, participant count, participant videoelement (e.g., single or multiple), picture strip, poll, random source,room preview, scheduled time, sound effect, stopwatch, take picture,text, timer, user search, video, waiting list, web media, website.Examples of shapes include, but are not limited to, a circle, rectangleand triangle.

The users category of the menu interface 402 is user-selectable forpresenting options (e.g., via a drop-down list) to manageusers/participants of the virtual space (e.g., adding tags forparticipants, so as to distinguish between roles such as anadministrator or an attendee/participant). In addition, the editcategory is user-selectable for performing edit operations (e.g., undo,redo, cut, copy, paste), and the help category is user-selectable forperforming help operations (e.g., getting started, discord, live help,submitting feedback).

In one or more embodiments, the room elements interface 404 includesuser-selectable icons for inserting elements (e.g., corresponding to asubset of those available via the above-mentioned element category) intoa current room. For example, the elements may be added and/or positionedwithin the current room by selecting the element and dragging theselected element onto the room canvas interface 412, which representsthe layout of the current room.

In one or more embodiments, the room elements interface 404 includeicons including but not limited to: a text icon for adding text to aroom; a participant video icon for adding a single participant videoelement (e.g., an interface element which is selectable by a singleparticipant for displaying that participant's video feed) to a room; amultiuser video icon for adding a multiple participant video element(e.g., an interface element which is selectable by one or moreparticipants for displaying the video feeds for those participants) to aroom; a chat icon for adding a chat interface (e.g., for messaging usingtext, stickers, emojis, etc.) to a room; a video playback icon foradding a video playback element (e.g., screen) to a room for playback ofa selected video; a background icon for selecting a backgroundcolor/gradient, image or video to a room; an action icon for adding anaction element (e.g., button) to a room for performing a user-definedaction (e.g., speaking into a virtual microphone, querying anadministrator via a button, and the like); and/or a breakout button foradding a breakout element (e.g., button) for shuffling selectedparticipants between the current room and one or more other rooms.

In one or more embodiments, the element properties interface 406 includevarious fields for setting configuration properties for above-describedroom elements. For example, with respect to elements in general (e.g.,text, single participant video element, multi participant video element,chat interface, video element, background image, action element,breakout button), the element properties interface 406 includes fieldsfor setting the element title/name, opacity, gradient, style, layout,borders/corners, shadows, interaction (e.g., to what extentparticipant(s) may delete, modify, resize the element), filtering, fullscreen status, conditions, accessibility and actions for the element. Inaddition, the element properties interface 406 may include a field forpresenting a property affector interface for specifying how an elementaffects property value(s) of other elements (e.g., as discussed furtherbelow with respect to FIGS. 6-8 ).

For the single participant video element, the element propertiesinterface 406 includes further fields for setting the manner in whichusers are placed into the single participant video element duringvirtual conferencing (e.g., automatically, manually by the participantand/or the administrator end user). In addition, for the chat interface,the element properties interface 406 includes further properties forsetting who (e.g., administrator and/or participants) can provide chatinput, and/or which types of input (e.g., text, stickers, emojis, etc.)are available. For the action element, the element properties interface406 includes further properties for setting what type of action is to beperformed in response to user selection of the action element (e.g.,button). Moreover, for the breakout element, the element propertiesinterface 406 includes further properties for selecting participantsand/or breakout rooms.

In one or more embodiments, the element properties interface 406 furtherincludes fields for setting configuration properties for the room canvasinterface 412. For example, the element properties interface 406includes fields for selecting a number of fake participants (e.g.,simulated video feeds) in order to visualize multiple users, selectingmusic (e.g., background music), and/or selecting reaction buttons forparticipants to indicate real-time reactions with respect to virtualconferencing within a room.

In one or more embodiments, the controls interface 408 includesuser-selectable icons corresponding to controls (e.g., administrativecontrols) for the virtual space. For example, the controls interface 408include icons including but not limited to: a director mode icon fortoggling between a director mode for designing a room and a user modefor viewing the room within the virtual space design interface 204(e.g., with the director mode including the room elements interface 404and the element properties interface 406 while the user mode does not);a view icon for viewing the room within the virtual space navigationinterface 208; a share screen icon (e.g., for collaborative design withother user(s) such as co-administrators); a microphone icon for enablingor disabling the microphone; a help icon (e.g., getting started,discord, live help, submitting feedback); an invite icon (e.g., fordisplaying an invite link for sending to participants to visit thevirtual space); a settings icon (e.g., for selecting the end user'svideo and audio devices for the virtual conferencing, and for selectinga user avatar); and/or an exit icon for exiting the virtual space designinterface 204.

In one or more embodiments, the room list interface 410 displays thelist of rooms for the virtual space. Each listed room is user selectableto switch to edit (e.g., in director mode) and/or view (e.g., in usermode) the selected room. As noted above, the list of rooms may bemodified (e.g., by adding, importing and/or removing rooms) via theoptions within the room category of the menu interface 402.

FIG. 5 illustrates a virtual space navigation interface 208 withinterface elements to navigate between the rooms of a virtual space andto participate in virtual conferencing with respect to the rooms, inaccordance with some example embodiments. The virtual space navigationinterface 208 includes a controls interface 502, a room list interface504, a current room interface 506, a participant video element 508 and aparticipant video element 510. It is noted that elements 502-512correspond to an example of interface elements for the virtual spacenavigation interface 208, and that additional, fewer and/or differentinterface elements may be used.

In one or more embodiments, the controls interface 502 includesuser-selectable icons corresponding to controls (e.g., administrativecontrols) for the virtual space. For example, the controls interface 408include icons including but not limited to: an edit icon for redirectingto the virtual space design interface 204 to edit the current room; avolume icon for adjusting a volume level for the current room; a sharescreen icon (e.g., for allowing others to view the room withoutnecessarily joining the room); a microphone icon for muting and unmutingthe microphone; a help icon (e.g., getting started, discord, live help,submitting feedback); an invite icon (e.g., for displaying an invitelink for participants to visit the virtual space); a settings icon(e.g., for selecting the end user's video and audio devices for thevirtual conferencing, and for selecting a user avatar); and/or an exiticon for exiting the virtual space design interface 204.

In one or more embodiments, the room list interface 504 displays thelist of rooms for the virtual space. Each listed room is user selectableto switch to the selected room (e.g., for virtual conferencing). Theselected room is presented as a current room within the current roominterface 506. In this manner, a participant may navigate among themultiple rooms available within the virtual space. Alternatively or inaddition, navigation between rooms is possible via a virtual space mapinterface (not shown) which depicts a map view of the virtual space(e.g., a floor plan) and its corresponding rooms, with each room beinguser selectable to navigate thereto. Alternatively or in addition,navigation between rooms is further possible by positioning a navigationbutton (not shown) within a room, where user selection of the buttonresults in navigating to another room (e.g., a predefined room). Asnoted above, the virtual space design interface 204 allows for thedesign of a virtual space and its corresponding rooms. As such,navigation between rooms is based at least in part on the design of thevirtual space (e.g., a virtual space may include one or more of theabove-mentioned room list interface 504, the virtual space map/floorplan interface and/or the navigation button).

With respect to the current room interface 506, each participant isrepresented as a respective participant video element. As noted above, aparticipant video element corresponds to an interface element (e.g., abox) which is selectable by a single participant for displaying thatparticipant's video feed. The example of FIG. 5 includes a firstparticipant associated with the participant video element 508 and asecond participant associated with the participant video element 510. Inone or more embodiments, with respect to the perspective of the firstparticipant, the participant video element 510 showing the feed of thesecond participant may include participant button(s) 512. For example,the participant button(s) 512 are selectable by the first participant soas to perform a predefined action (e.g., initiate a side conversation,designate the second participant to follow the first participant whenthe first participant moves rooms) with respect to the secondparticipant.

While the example of FIG. 5 illustrates two participants, it is possiblefor the current room interface 506 to accommodate additionalparticipants for virtual conferencing. The additional participants maybe positioned (e.g., automatically and/or manually by dragging) based onthe positioning of participant video elements (e.g., boxes) as designedby the virtual space design interface 204.

In one or more embodiments, the virtual space navigation interface 208may vary based on whether a given participant is an administrator oranother participant (e.g., an attendee). For example, some participantvideo elements may be designated (e.g., via the virtual space designinterface 204) for administrators, while other participant videoelements are designated for other participants. The virtual conferenceserver system 108 is configured to distinguish between theseadministrator or other participant roles, for example, based on theabove-described tags assigned to participants via the users category ofthe menu interface 402 provided by the virtual space design interface204.

FIG. 6 is an interaction diagram illustrating a process 600 for updatingelement properties based on distances between elements in a virtualconference, in accordance with some example embodiments. For explanatorypurposes, the process 600 is described herein with reference to a firstclient device 602, one or more second client device(s) 604, and thevirtual conference server system 108. Each of the first client device602 and the second client device(s) 604 may correspond to a respectiveclient device 102. The process 600 is not limited to the first clientdevice 602, the second client device(s) 604 and the virtual conferenceserver system 108. Moreover, one or more blocks (or operations) of theprocess 600 may be performed by one or more other components of thefirst client device 602, the second client device(s) 604 or the virtualconference server system 108, and/or by other suitable devices. Furtherfor explanatory purposes, the blocks (or operations) of the process 600are described herein as occurring in serial, or linearly. However,multiple blocks (or operations) of the process 600 may occur in parallelor concurrently. In addition, the blocks (or operations) of the process600 need not be performed in the order shown and/or one or more blocks(or operations) of the process 600 need not be performed and/or can bereplaced by other operations. The process 600 may be terminated when itsoperations are completed. In addition, the process 600 may correspond toa method, a procedure, an algorithm, etc.

Each of the first client device 602 and the second client device(s) 604have instances of the virtual conference client 104 installed thereon.In the example of FIG. 6 , the first client device 602 and the one ormore second client devices) 604 are associated with a respective firstparticipant and respective one or more second participant(s) of thevirtual conference server system 108. For example, the first participantmay be associated with a first user account of the virtual conferenceserver system 108, and the second participant(s) may be associated withsecond user account(s) of the virtual conference server system 108.

As noted above, the first participant and second participant(s) areidentifiable by the virtual conference server system 108 based on uniqueidentifiers (e.g., email addresses, telephone numbers) associated withrespective user accounts for the first participant and secondparticipant(s). In one or more embodiments, the virtual conferenceserver system 108 implements and/or works in conjunction with a socialnetwork server 122 which is configured to identify contacts with which aparticular user has relationships. For example, the first participantand second participant(s) may be contacts with respect to the virtualconference server system 108.

As described herein, the virtual conferencing system 100 provides for adesigner (e.g., an administrator) of a room to specify how a firstelement affects the properties of a second element, based on thedistance between the two elements. For example, the first element mayaffect the visual properties and/or audio properties of the secondelement, based on detected changes in distance between the first andsecond elements.

In the example of FIG. 6 , operations 606-612 may correspond to a firstphase (e.g., a “design phase”) and operations 614-622 may correspond toa second phase (e.g., a “virtual conferencing phase”). During the designphase, a user (e.g., administrator) specifies how a first element in theroom affects the property value(s) of a second element in the room.During the virtual conferencing phase, the property value(s) of thesecond element are updated based on detected changes in distance betweenthe first element and the second element. It may be understood that thesecond phase may occur shortly after the first phase, or after anextended period of time after the first phase. As such, FIG. 6 includesa dashed line separating the first phase and the second phase forillustrative purposes.

In one or more embodiments, the design phase corresponds with the user(e.g., administrator) employing the various interface elements of thevirtual space design interface 204 in order to design the virtual spaceand its corresponding rooms. As noted above, the virtual space designinterface 204 includes the element properties interface 406, whichincludes a user-selectable field for presenting a property affectorinterface. The property affector interface, in turn, allows a user toselect parameters that define how an element (e.g., a first element inthe room) affects property value(s) of another element (e.g., a secondelement in the room) based on the distance between the first and secondelements. An example of the property affector interface is depicted inFIG. 7 , which is discussed further below.

Thus, at operation 606, the virtual conference server system 108provides for display of the property affector interface, the firstparticipant to specify how the first element affects property value(s)of the second element. Each of the first element and the second elementmay correspond with one of the elements and/or shapes described abovewith respect to the element category of the menu interface 402 in FIG. 4. As noted above, an element within a room may correspond to: an actionbutton, analog clock, audience question board, backpack item, breakoutbutton, chat, closed caption display, closed caption input, countdown,clock, digital clock, doorbell, double-sided image, feedback, image,multiuser video chat, music, participant audio mixer, participant count,participant video element (e.g., single or multiple), picture strip,poll, random source, room preview, scheduled time, sound effect,stopwatch, take picture, text, timer, user search, video, waiting list,web media, website, or a shape (e.g., circle, rectangle, triangle).

In the example of FIG. 6 , the first client device 602 receives userselection of the parameter values via the property affector interface(block 608). In one or more embodiments, the user selects, via theproperty affector interface, which property types from plural availableproperty types of the second element are affected by the first element.Examples of property types include, but are not limited to: blur,brightness, contrast, saturation, red level, green level, blue level,x-axis rotation, y-axis rotation, z-axis rotation, x-axis scaling,y-axis scaling, participant audio volume, media volume, opacity, x-axisposition, y-axis position, and video seek percentage of the secondelement.

For each of the selected property types, the user may further selectparameter values to indicate whether the second element is affected in aradial, x-axis or y-axis manner based on distance from the firstelement. Moreover, for each of the selected property types, the user mayselect a range (e.g., in pixels) in which the first element affects thesecond element. For the selected range, the user may further select anedge value (e.g., corresponding to the radius for the first element), acenter value (e.g., corresponding to a center of the first element), anda distance exponent (e.g., corresponding to an exponent on the curve fordistance, with the distance from the center of the first element rangingfrom 0 to 1).

In one or more embodiments, the virtual space design interface 204(e.g., via the property affector interface) permits the user to specifyelements that are not to be affected by the first element. In thismanner, it is possible to omit particular elements from being affectedbased on distance to the first element.

The first client device 602 sends an indication of the user-specifiedparameter values to the virtual conference server system 108 (operation610). The virtual conference server system 108 stores the parametervalues in association with the first element (block 612). For example,the virtual conference server system 108 provides for storing theparameter values within the rooms table 310 of the database 126, inassociation with the room.

As noted above, operations 614-622 relate to a virtual conferencingphase, in which participants engage in virtual conferencing within theroom. At operations 614-616, the virtual conference server system 108provides the first and second elements within the room for virtualconferencing.

In one or more embodiments, the first and second elements are movablewithin the room during the virtual conference. The first element and/orsecond element may have been designed (e.g., via the virtual spacedesign interface 204) to be movable during virtual conferencing, such asby a drag gesture by participants (e.g., as authorized by theadministrator).

For example, the first element may correspond to a light source (e.g.,depicted as a shape) which increases/decreases the brightness propertyof a second element (e.g., a participant video element or otherelement), as the first element moves closer to/further from the secondelement via the drag gesture. In another example, the first element maycorrespond to a microphone which increases/decreases the participantaudio volume property of a second element (e.g., a participant videoelement), as the first element moves closer to/further from the secondelement via the drag gesture.

As noted above, the first element may correspond to any of theabove-noted elements, and the type of property can correspond to one ormore of the above-noted property types. Further, it is possible forcertain elements to be designated as not affected by the first element.Using the above microphone example, a participant video element of ateacher/presenter may be designated as not affected by the first element(e.g., microphone). In this manner, the audio volume associated with theteacher/presenter is not affected by movement of the microphone withinthe room (e.g., class), thereby reducing inadvertent muting of theteacher/presenter during the virtual conference.

The virtual conference server system 108 updates property value(s) forthe second element, based on a detected change in distance between thefirst and second elements, and based on the parameter values stored inassociation with the first element (block 618). The virtual conferenceserver system 108 provides for updated display of the second elementbased on the updated property value(s) (operations 620-622).

Thus, as the first and/or second elements move through the room, thevirtual conference server system 108 provides for updating display ofthe second element, based on whether property value(s) for the secondelement are updated. For example, when the first element corresponds toa light source, display of the second element is updated in cases wherethe parameter values specify to update property value(s) (e.g.,brightness) of the second element. In another example, when the firstelement corresponds to a microphone, audio associated with the secondelement is updated in cases where the parameter values specify to updateproperty value(s) (e.g., participant audio volume) of the secondelement.

Thus, the virtual conferencing system 100 as described herein allows auser to specify parameters defining how a first element in the roomaffects the property value(s) (e.g., brightness, audio volume) of asecond element in the room. During virtual conferencing, the propertyvalue(s) of the second element are updated based on detected changes indistance between the first element and the second element. Presentationof the second element is changed (e.g., the second element becomesbrighter, louder, etc.) based on the updated property value(s).

By virtue of allowing a user to specify such parameters, it is possibleto automatically update display properties of elements which moverelative to one another during virtual conferencing. Without allowingthe user (e.g., administrator) to specify these parameters duringdesign, the user may otherwise be required to manually program changesto properties of elements as they move relative to one another. Thevirtual conferencing system 100 reduces such additional efforts by theuser, thereby saving time for the user, and reducing computationalresources/processing power for the virtual conferencing system 100.

FIG. 7 illustrates a property affector interface 700 for specifying howan element affects property values of other elements, in accordance withsome example embodiments. As noted above, the property affectorinterface 700 may be presented in response to user selection of auser-selectable field within the element properties interface 406 of thevirtual space design interface 204 (e.g., per FIG. 4 ). The example ofFIG. 7 includes interface elements 702-712.

The property affector interface 700 allows the user to select, via adrop-down list of the interface element 702, a property type of thesecond element that is to be affected by the first element (e.g., basedon distance between the elements). As noted above, the property typesmay include blur, brightness, contrast, saturation, red level, greenlevel, blue level, x-axis rotation, y-axis rotation, z-axis rotation,x-axis scaling, y-axis scaling, participant audio volume, media volume,opacity, x-axis position, y-axis position, and video seek percentage ofthe second element.

For the selected property type, the user selects parameter values viathe interface element 704, to indicate whether the second element isaffected in a radial, x-axis or y-axis manner based on the distance.Moreover, for the selected property type, the user selects via theinterface element 706 a range (e.g., in pixels) in which the firstelement affects the second element. For the selected range, the userselects an edge value (e.g., corresponding to the radius for the firstelement) via the interface element 708, a center value (e.g.,corresponding to a center of the first element) via the interfaceelement 710, and a distance exponent (e.g., corresponding to an exponenton the curve for distance, with the distance from the center of thefirst element ranging from 0 to 1) via the interface element 712.

Upon completing the parameter values for a first property type, the usermay re-use the property affector interface 700 to select additionalproperty types (e.g., via interface element 702). In addition, the usermay select corresponding values for each additional property type (e.g.,via interface elements 704-712).

FIG. 8 illustrates a current room interface 800 with elements designedto affect the property values of other elements, in accordance with someexample embodiments. As noted above, the current room interface 800 maybe included within a virtual space navigation interface 208 (e.g., perFIG. 5 ). The example of FIG. 8 depicts box elements 802-804, and aparticipant video element 806.

Each of the box elements 802-804 may correspond to the above-describedfirst elements, which have parameter values associated therewith foraffecting the property value(s) of a second element. In this example,the participant video element 806 corresponds to the second element, theproperty value(s) of which are updated as its distance changes relativeto the box element 802 and/or the box element 804.

The box element 802 may be depicted as a red box, designed to affect ared level of other elements (e.g., the participant video element 806).On the other hand, the box element 804 may be depicted as a blue box,designed to affect a blue level of other elements (e.g., the participantvideo element 806).

One of more of the box elements 802-804 and the participant videoelement 806 may be movable (e.g., by design) via a drag gesture. Thus,the virtual conference server system 108 provides forincreasing/decreasing the red level property of the participant videoelement 806, as the box element 802 moves closer to/further from theparticipant video element 806. In addition, the virtual conferenceserver system 108 provides for increasing/decreasing the blue levelproperty of the participant video element 806, as the box element 804moves closer to/further from the participant video element 806.

FIG. 9 is a flowchart illustrating a process 900 for updating elementproperties based on distances between elements in a virtual conference,in accordance with some example embodiments. For explanatory purposes,the process 900 is primarily described herein with reference to thefirst client device 602, the second client device(s) 604 and the virtualconference server system 108 of FIG. 1 and FIG. 2 . However, one or moreblocks (or operations) of the process 900 may be performed by one ormore other components, and/or by other suitable devices. Further forexplanatory purposes, the blocks (or operations) of the process 900 aredescribed herein as occurring in serial, or linearly. However, multipleblocks (or operations) of the process 900 may occur in parallel orconcurrently. In addition, the blocks (or operations) of the process 900need not be performed in the order shown and/or one or more blocks (oroperations) of the process 900 need not be performed and/or can bereplaced by other operations. The process 900 may be terminated when itsoperations are completed. In addition, the process 900 may correspond toa method, a procedure, an algorithm, etc.

The virtual conference server system 108 provides, in association withdesigning a room for virtual conferencing, an interface for specifyinghow a first element in the room affects at least one property value of asecond element in the room, based on distance between the first elementand the second element (block 902). Designing the room may be associatedwith a design interface for designing rooms for virtual conferencing.The virtual conference server system 108 may provide, in associationwith designing the room, an interface element for selecting whichelements in the room are to be affected by the first element based onrespective distances therebetween.

The virtual conference server system 108 receives, via the interface,user selection of parameter values specifying how the first elementaffects the at least one property value of the second element based onthe distance (block 904). The parameter values may indicate one or moreproperty types of the second element that are affected by the firstelement. For example, the property types include blur, brightness,contrast, saturation, red level, green level, blue level, x-axisrotation, y-axis rotation, z-axis rotation, x-axis scaling, y-axisscaling, participant audio volume, media volume, opacity, x-axisposition, y-axis position, and video seek percentage.

For each of the one or more property types, the parameter values mayindicate whether the second element is affected in a radial, x-axis ory-axis manner. For each of the one or more property types, the parametervalues may indicate a range in which the first element affects thesecond element, and an edge value, center value and distance exponentassociated with the range. The virtual conference server system 108 maystore the parameter values in association with the first element.

The virtual conference server system 108 provides a virtual conferencebetween plural participants within the room, the room including thefirst element and the second element (block 906). The virtual conferenceserver system 108 may provide, for each of the plural participants,display of a participant video element which corresponds to theparticipant and which includes a video feed for the participant.Providing the virtual conference may be associated with a navigationinterface for navigating between the rooms.

The virtual conference server system 108 updates the at least oneproperty value of the second element based on a detected change indistance between the first element and the second element, and based onthe parameter values (block 908). The virtual conference server system108 provides for updated display of the second element based on theupdated at least one property value (block 910).

FIG. 10 is a diagrammatic representation of the machine 1000 withinwhich instructions 1010 (e.g., software, a program, an application, anapplet, an app, or other executable code) for causing the machine 1000to perform any one or more of the methodologies discussed herein may beexecuted. For example, the instructions 1010 may cause the machine 1000to execute any one or more of the methods described herein. Theinstructions 1010 transform the general, non-programmed machine 1000into a particular machine 1000 programmed to carry out the described andillustrated functions in the manner described. The machine 1000 mayoperate as a standalone device or may be coupled (e.g., networked) toother machines. In a networked deployment, the machine 1000 may operatein the capacity of a server machine or a client machine in aserver-client network environment, or as a peer machine in apeer-to-peer (or distributed) network environment. The machine 1000 maycomprise, but not be limited to, a server computer, a client computer, apersonal computer (PC), a tablet computer, a laptop computer, a netbook,a set-top box (STB), a personal digital assistant (PDA), anentertainment media system, a cellular telephone, a smartphone, a mobiledevice, a wearable device (e.g., a smartwatch), a smart home device(e.g., a smart appliance), other smart devices, a web appliance, anetwork router, a network switch, a network bridge, or any machinecapable of executing the instructions 1010, sequentially or otherwise,that specify actions to be taken by the machine 1000. Further, whileonly a single machine 1000 is illustrated, the term “machine” shall alsobe taken to include a collection of machines that individually orjointly execute the instructions 1010 to perform any one or more of themethodologies discussed herein. The machine 1000, for example, maycomprise the client device 102 or any one of a number of server devicesforming part of the virtual conference server system 108. In someexamples, the machine 1000 may also comprise both client and serversystems, with certain operations of a particular method or algorithmbeing performed on the server-side and with certain operations of theparticular method or algorithm being performed on the client-side.100961 The machine 1000 may include processors 1004, memory 1006, andinput/output I/O components 1002, which may be configured to communicatewith each other via a bus 1040. In an example, the processors 1004(e.g., a Central Processing Unit (CPU), a Reduced Instruction SetComputing (RISC) Processor, a Complex Instruction Set Computing (CISC)Processor, a Graphics Processing Unit (GPU), a Digital Signal Processor(DSP), an Application Specific Integrated Circuit (ASIC), aRadio-Frequency Integrated Circuit (RFIC), another processor, or anysuitable combination thereof) may include, for example, a processor 1008and a processor 1012 that execute the instructions 1010. The term“processor” is intended to include multi-core processors that maycomprise two or more independent processors (sometimes referred to as“cores”) that may execute instructions contemporaneously. Although FIG.10 shows multiple processors 1004, the machine 1000 may include a singleprocessor with a single-core, a single processor with multiple cores(e.g., a multi-core processor), multiple processors with a single core,multiple processors with multiples cores, or any combination thereof.

The memory 1006 includes a main memory 1014, a static memory 1016, and astorage unit 1018, both accessible to the processors 1004 via the bus1040. The main memory 1006, the static memory 1016, and storage unit1018 store the instructions 1010 embodying any one or more of themethodologies or functions described herein. The instructions 1010 mayalso reside, completely or partially, within the main memory 1014,within the static memory 1016, within machine-readable medium 1020within the storage unit 1018, within at least one of the processors 1004(e.g., within the Processor's cache memory), or any suitable combinationthereof, during execution thereof by the machine 1000.

The I/O components 1002 may include a wide variety of components toreceive input, provide output, produce output, transmit information,exchange information, capture measurements, and so on. The specific I/Ocomponents 1002 that are included in a particular machine will depend onthe type of machine. For example, portable machines such as mobilephones may include a touch input device or other such input mechanisms,while a headless server machine will likely not include such a touchinput device. It will be appreciated that the I/O components 1002 mayinclude many other components that are not shown in FIG. 10 . In variousexamples, the I/O components 1002 may include user output components1026 and user input components 1028. The user output components 1026 mayinclude visual components (e.g., a display such as a plasma displaypanel (PDP), a light-emitting diode (LED) display, a liquid crystaldisplay (LCD), a projector, or a cathode ray tube (CRT)), acousticcomponents (e.g., speakers), haptic components (e.g., a vibratory motor,resistance mechanisms), other signal generators, and so forth. The userinput components 1028 may include alphanumeric input components (e.g., akeyboard, a touch screen configured to receive alphanumeric input, aphoto-optical keyboard, or other alphanumeric input components),point-based input components (e.g., a mouse, a touchpad, a trackball, ajoystick, a motion sensor, or another pointing instrument), tactileinput components (e.g., a physical button, a touch screen that provideslocation and force of touches or touch gestures, or other tactile inputcomponents), audio input components (e.g., a microphone), and the like.

In further examples, the I/O components 1002 may include biometriccomponents 1030, motion components 1032, environmental components 1034,or position components 1036, among a wide array of other components. Forexample, the biometric components 1030 include components to detectexpressions (e.g., hand expressions, facial expressions, vocalexpressions, body gestures, or eye-tracking), measure biosignals (e.g.,blood pressure, heart rate, body temperature, perspiration, or brainwaves), identify a person (e.g., voice identification, retinalidentification, facial identification, fingerprint identification, orelectroencephalogram-based identification), and the like. The motioncomponents 1032 include acceleration sensor components (e.g.,accelerometer), gravitation sensor components, rotation sensorcomponents (e.g., gyroscope).

The environmental components 1034 include, for example, one or cameras(with still image/photograph and video capabilities), illuminationsensor components (e.g., photometer), temperature sensor components(e.g., one or more thermometers that detect ambient temperature),humidity sensor components, pressure sensor components (e.g.,barometer), acoustic sensor components (e.g., one or more microphonesthat detect background noise), proximity sensor components (e.g.,infrared sensors that detect nearby objects), gas sensors (e.g., gasdetection sensors to detection concentrations of hazardous gases forsafety or to measure pollutants in the atmosphere), or other componentsthat may provide indications, measurements, or signals corresponding toa surrounding physical environment.

With respect to cameras, the client device 102 may have a camera systemcomprising, for example, front cameras on a front surface of the clientdevice 102 and rear cameras on a rear surface of the client device 102.The front cameras may, for example, be used to capture still images andvideo of a user of the client device 102 (e.g., “series”), which maythen be augmented with augmentation data (e.g., filters) describedabove. The rear cameras may, for example, be used to capture stillimages and videos in a more traditional camera mode, with these imagessimilarly being augmented with augmentation data. In addition to frontand rear cameras, the client device 102 may also include a 360° camerafor capturing 360° photographs and videos.

Further, the camera system of a client device 102 may include dual rearcameras (e.g., a primary camera as well as a depth-sensing camera), oreven triple, quad or penta rear camera configurations on the front andrear sides of the client device 102. These multiple cameras systems mayinclude a wide camera, an ultra-wide camera, a telephoto camera, a macrocamera and a depth sensor, for example.

The position components 1036 include location sensor components (e.g., aGPS receiver component), altitude sensor components (e.g., altimeters orbarometers that detect air pressure from which altitude may be derived),orientation sensor components (e.g., magnetometers), and the like.

Communication may be implemented using a wide variety of technologies.The I/O components 1002 further include communication components 1038operable to couple the machine 1000 to a network 1022 or devices 1024via respective coupling or connections. For example, the communicationcomponents 1038 may include a network interface Component or anothersuitable device to interface with the network 1022. In further examples,the communication components 1038 may include wired communicationcomponents, wireless communication components, cellular communicationcomponents, Near Field Communication (NFC) components, Bluetooth®components (e.g., Bluetooth® Low Energy), Wi-Fi® components, and othercommunication components to provide communication via other modalities.The devices 1024 may be another machine or any of a wide variety ofperipheral devices (e.g., a peripheral device coupled via a USB).

Moreover, the communication components 1038 may detect identifiers orinclude components operable to detect identifiers. For example, thecommunication components 1038 may include Radio Frequency Identification(RFID) tag reader components, NFC smart tag detection components,optical reader components (e.g., an optical sensor to detectone-dimensional bar codes such as Universal Product Code (UPC) bar code,multi-dimensional bar codes such as Quick Response (QR) code, Azteccode, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2Dbar code, and other optical codes), or acoustic detection components(e.g., microphones to identify tagged audio signals). In addition, avariety of information may be derived via the communication components1038, such as location via Internet Protocol (IP) geolocation, locationvia Wi-Fi® signal triangulation, location via detecting an NFC beaconsignal that may indicate a particular location, and so forth.

The various memories (e.g., main memory 1014, static memory 1016, andmemory of the processors 1004) and storage unit 1018 may store one ormore sets of instructions and data structures (e.g., software) embodyingor used by any one or more of the methodologies or functions describedherein. These instructions (e.g., the instructions 1010), when executedby processors 1004, cause various operations to implement the disclosedexamples.

The instructions 1010 may be transmitted or received over the network1022, using a transmission medium, via a network interface device (e.g.,a network interface component included in the communication components1038) and using any one of several well-known transfer protocols (e.g.,hypertext transfer protocol (HTTP)). Similarly, the instructions 1010may be transmitted or received using a transmission medium via acoupling (e.g., a peer-to-peer coupling) to the devices 1024.

FIG. 11 is a block diagram 1100 illustrating a software architecture1104, which can be installed on any one or more of the devices describedherein. The software architecture 1104 is supported by hardware such asa machine 1102 that includes processors 1120, memory 1126, and I/Ocomponents 1138. In this example, the software architecture 1104 can beconceptualized as a stack of layers, where each layer provides aparticular functionality. The software architecture 1104 includes layerssuch as an operating system 1112, libraries 1110, frameworks 1108, andapplications 1106. Operationally, the applications 1106 invoke API calls1150 through the software stack and receive messages 1152 in response tothe API calls 1150.

The operating system 1112 manages hardware resources and provides commonservices. The operating system 1112 includes, for example, a kernel1114, services 1116, and drivers 1122. The kernel 1114 acts as anabstraction layer between the hardware and the other software layers.For example, the kernel 1114 provides memory management, processormanagement (e.g., scheduling), component management, networking, andsecurity settings, among other functionality. The services 1116 canprovide other common services for the other software layers. The drivers1122 are responsible for controlling or interfacing with the underlyinghardware. For instance, the drivers 1122 can include display drivers,camera drivers, BLUETOOTH® or BLUETOOTH® Low Energy drivers, flashmemory drivers, serial communication drivers (e.g., USB drivers), WI-FI®drivers, audio drivers, power management drivers, and so forth.

The libraries 1110 provide a common low-level infrastructure used by theapplications 1106. The libraries 1110 can include system libraries 1118(e.g., C standard library) that provide functions such as memoryallocation functions, string manipulation functions, mathematicfunctions, and the like. In addition, the libraries 1110 can include APIlibraries 1124 such as media libraries (e.g., libraries to supportpresentation and manipulation of various media formats such as MovingPicture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC),Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC),Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group(JPEG or JPG), or Portable Network Graphics (PNG)), graphics libraries(e.g., an OpenGL framework used to render in two dimensions (2D) andthree dimensions (3D) in a graphic content on a display), databaselibraries (e.g., SQLite to provide various relational databasefunctions), web libraries (e.g., WebKit to provide web browsingfunctionality), and the like. The libraries 1110 can also include a widevariety of other libraries 1128 to provide many other APIs to theapplications 1106.

The frameworks 1108 provide a common high-level infrastructure that isused by the applications 1106. For example, the frameworks 1108 providevarious graphical user interface (GUI) functions, high-level resourcemanagement, and high-level location services. The frameworks 1108 canprovide a broad spectrum of other APIs that can be used by theapplications 1106, some of which may be specific to a particularoperating system or platform.

In an example, the applications 1106 may include a home application1136, a contacts application 1130, a browser application 1132, a bookreader application 1134, a location application 1142, a mediaapplication 1144, a messaging application 1146, a game application 1148,and a broad assortment of other applications such as a third-partyapplication 1140. The applications 1106 are programs that executefunctions defined in the programs. Various programming languages can beemployed to create one or more of the applications 1106, structured in avariety of manners, such as object-oriented programming languages (e.g.,Objective-C, Java, or C++) or procedural programming languages (e.g., Cor assembly language). In a specific example, the third-partyapplication 1140 (e.g., an application developed using the ANDROID™ orIOS™ software development kit (SDK) by an entity other than the vendorof the particular platform) may be mobile software running on a mobileoperating system such as IOS™, ANDROID™, WINDOWS® Phone, or anothermobile operating system. In this example, the third-party application1140 can invoke the API calls 1150 provided by the operating system 1112to facilitate functionality described herein.

Glossary

“Carrier signal” refers to any intangible medium that is capable ofstoring, encoding, or carrying instructions for execution by themachine, and includes digital or analog communications signals or otherintangible media to facilitate communication of such instructions.Instructions may be transmitted or received over a network using atransmission medium via a network interface device.

“Client device” refers to any machine that interfaces to acommunications network to obtain resources from one or more serversystems or other client devices. A client device may be, but is notlimited to, a mobile phone, desktop computer, laptop, portable digitalassistants (PDAs), smartphones, tablets, ultrabooks, netbooks, laptops,multi-processor systems, microprocessor-based or programmable consumerelectronics, game consoles, set-top boxes, or any other communicationdevice that a user may use to access a network.

“Communication network” refers to one or more portions of a network thatmay be an ad hoc network, an intranet, an extranet, a virtual privatenetwork (VPN), a local area network (LAN), a wireless LAN (WLAN), a widearea network (WAN), a wireless WAN (WWAN), a metropolitan area network(MAN), the Internet, a portion of the Internet, a portion of the PublicSwitched Telephone Network (PSTN), a plain old telephone service (POTS)network, a cellular telephone network, a wireless network, a Wi-Fi®network, another type of network, or a combination of two or more suchnetworks. For example, a network or a portion of a network may include awireless or cellular network and the coupling may be a Code DivisionMultiple Access (CDMA) connection, a Global System for Mobilecommunications (GSM) connection, or other types of cellular or wirelesscoupling. In this example, the coupling may implement any of a varietyof types of data transfer technology, such as Single Carrier RadioTransmission Technology (1×RTT), Evolution-Data Optimized (EVDO)technology, General Packet Radio Service (GPRS) technology, EnhancedData rates for GSM Evolution (EDGE) technology, third GenerationPartnership Project (3GPP) including 3G, fourth generation wireless (4G)networks, Universal Mobile Telecommunications System (UMTS), High SpeedPacket Access (HSPA), Worldwide Interoperability for Microwave Access(WiMAX), Long Term Evolution (LTE) standard, others defined by variousstandard-setting organizations, other long-range protocols, or otherdata transfer technology.

“Component” refers to a device, physical entity, or logic havingboundaries defined by function or subroutine calls, branch points, APIs,or other technologies that provide for the partitioning ormodularization of particular processing or control functions. Componentsmay be combined via their interfaces with other components to carry outa machine process. A component may be a packaged functional hardwareunit designed for use with other components and a part of a program thatusually performs a particular function of related functions. Componentsmay constitute either software components (e.g., code embodied on amachine-readable medium) or hardware components. A “hardware component”is a tangible unit capable of performing certain operations and may beconfigured or arranged in a certain physical manner. In variousexamples, one or more computer systems (e.g., a standalone computersystem, a client computer system, or a server computer system) or one ormore hardware components of a computer system (e.g., a processor or agroup of processors) may be configured by software (e.g., an applicationor application portion) as a hardware component that operates to performcertain operations as described herein. A hardware component may also beimplemented mechanically, electronically, or any suitable combinationthereof. For example, a hardware component may include dedicatedcircuitry or logic that is permanently configured to perform certainoperations. A hardware component may be a special-purpose processor,such as a field-programmable gate array (FPGA) or an applicationspecific integrated circuit (ASIC). A hardware component may alsoinclude programmable logic or circuitry that is temporarily configuredby software to perform certain operations. For example, a hardwarecomponent may include software executed by a general-purpose processoror other programmable processor. Once configured by such software,hardware components become specific machines (or specific components ofa machine) uniquely tailored to perform the configured functions and areno longer general-purpose processors. It will be appreciated that thedecision to implement a hardware component mechanically, in dedicatedand permanently configured circuitry, or in temporarily configuredcircuitry (e.g., configured by software), may be driven by cost and timeconsiderations. Accordingly, the phrase “hardware component”(or“hardware-implemented component”) should be understood to encompass atangible entity, be that an entity that is physically constructed,permanently configured (e.g., hardwired), or temporarily configured(e.g., programmed) to operate in a certain manner or to perform certainoperations described herein. Considering examples in which hardwarecomponents are temporarily configured (e.g., programmed), each of thehardware components need not be configured or instantiated at any oneinstance in time. For example, where a hardware component comprises ageneral-purpose processor configured by software to become aspecial-purpose processor, the general-purpose processor may beconfigured as respectively different special-purpose processors (e.g.,comprising different hardware components) at different times. Softwareaccordingly configures a particular processor or processors, forexample, to constitute a particular hardware component at one instanceof time and to constitute a different hardware component at a differentinstance of time. Hardware components can provide information to, andreceive information from, other hardware components. Accordingly, thedescribed hardware components may be regarded as being communicativelycoupled. Where multiple hardware components exist contemporaneously,communications may be achieved through signal transmission (e.g., overappropriate circuits and buses) between or among two or more of thehardware components. In examples in which multiple hardware componentsare configured or instantiated at different times, communicationsbetween such hardware components may be achieved, for example, throughthe storage and retrieval of information in memory structures to whichthe multiple hardware components have access. For example, one hardwarecomponent may perform an operation and store the output of thatoperation in a memory device to which it is communicatively coupled. Afurther hardware component may then, at a later time, access the memorydevice to retrieve and process the stored output. Hardware componentsmay also initiate communications with input or output devices, and canoperate on a resource (e.g., a collection of information). The variousoperations of example methods described herein may be performed, atleast partially, by one or more processors that are temporarilyconfigured (e.g., by software) or permanently configured to perform therelevant operations. Whether temporarily or permanently configured, suchprocessors may constitute processor-implemented components that operateto perform one or more operations or functions described herein. As usedherein, “processor-implemented component” refers to a hardware componentimplemented using one or more processors. Similarly, the methodsdescribed herein may be at least partially processor-implemented, with aparticular processor or processors being an example of hardware. Forexample, at least some of the operations of a method may be performed byone or more processors or processor-implemented components. Moreover,the one or more processors may also operate to support performance ofthe relevant operations in a “cloud computing” environment or as a“software as a service” (SaaS). For example, at least some of theoperations may be performed by a group of computers (as examples ofmachines including processors), with these operations being accessiblevia a network (e.g., the Internet) and via one or more appropriateinterfaces (e.g., an API). The performance of certain of the operationsmay be distributed among the processors, not only residing within asingle machine, but deployed across a number of machines. In someexamples, the processors or processor-implemented components may belocated in a single geographic location (e.g., within a homeenvironment, an office environment, or a server farm). In otherexamples, the processors or processor-implemented components may bedistributed across a number of geographic locations.

“Computer-readable storage medium” refers to both machine-storage mediaand transmission media. Thus, the terms include both storagedevices/media and carrier waves/modulated data signals. The terms“machine-readable medium,” “computer-readable medium” and“device-readable medium” mean the same thing and may be usedinterchangeably in this disclosure.

“Machine storage medium” refers to a single or multiple storage devicesand media (e.g., a centralized or distributed database, and associatedcaches and servers) that store executable instructions, routines anddata. The term shall accordingly be taken to include, but not be limitedto, solid-state memories, and optical and magnetic media, includingmemory internal or external to processors. Specific examples ofmachine-storage media, computer-storage media and device-storage mediainclude non-volatile memory, including by way of example semiconductormemory devices, e.g., erasable programmable read-only memory (EPROM),electrically erasable programmable read-only memory (EEPROM), FPGA, andflash memory devices; magnetic disks such as internal hard disks andremovable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.The terms “machine-storage medium,” “device-storage medium,”“computer-storage medium” mean the same thing and may be usedinterchangeably in this disclosure. The terms “machine-storage media,”“computer-storage media,” and “device-storage media” specificallyexclude carrier waves, modulated data signals, and other such media, atleast some of which are covered under the term “signal medium.”

“Non-transitory computer-readable storage medium” refers to a tangiblemedium that is capable of storing, encoding, or carrying theinstructions for execution by a machine.

“Signal medium” refers to any intangible medium that is capable ofstoring, encoding, or carrying the instructions for execution by amachine and includes digital or analog communications signals or otherintangible media to facilitate communication of software or data. Theterm “signal medium” shall be taken to include any form of a modulateddata signal, carrier wave, and so forth. The term “modulated datasignal” means a signal that has one or more of its characteristics setor changed in such a matter as to encode information in the signal. Theterms “transmission medium” and “signal medium” mean the same thing andmay be used interchangeably in this disclosure.

What is claimed is:
 1. A method, comprising: providing, in associationwith designing a room for virtual conferencing, an interface for settingparameter values to specify that at least one of a first element or asecond element in the room is movable during virtual conferencing, thata decrease in distance in pixels between the first element and secondelement is to increase a property value of the second element duringvirtual conferencing, and that an increase in distance in pixels betweenthe first element and the second element is to decrease the propertyvalue of the second element during virtual conferencing; receiving, viathe interface, user input setting the parameter values; providing avirtual conference between plural participants within the room, the roomincluding the first element and the second element; detecting movementof at least one of the first element or the second element during thevirtual conference; increasing, when the movement decreases the distancein pixels between the first element and the second element, the propertyvalue of the second element; decreasing, when the movement increases thedistance in pixels between the first element and the second element, theproperty value of the second element; and providing for updatedpresentation of the second element based on the increasing or decreasingof the property value of the second element.
 2. The method of claim 1,further comprising: storing, prior to providing the virtual conference,the parameter values in association with the first element.
 3. Themethod of claim 2, further comprising: providing, in association withdesigning the room, an interface element for selecting the secondelement from among plural elements.
 4. The method of claim 1, whereinthe property value corresponds to blur, brightness, contrast,saturation, red level, green level, blue level, x-axis rotation, y-axisrotation, z-axis rotation, x-axis scaling, y-axis scaling, participantaudio volume, media volume, opacity, x-axis position, y-axis position,or video seek percentage for the second element.
 5. The method of claim1, wherein the parameter values indicate whether the distance in pixelsbetween the first element and the second element is in a radial, x-axisor y-axis manner.
 6. The method of claim 1, wherein the parameter valuesindicate a range in pixels within which the distance in pixels betweenthe first element and the second element causes the property value toincrease or decrease, and an edge value, center value and distanceexponent associated with the range.
 7. The method of claim 1, whereindesigning the room is associated with a design interface for designingrooms for virtual conferencing, and wherein providing the virtualconference is associated with a navigation interface for navigatingbetween the rooms.
 8. The method of claim 1, further comprising:providing, for each of the plural participants, display of a participantvideo element which corresponds to the participant and which includes avideo feed for the participant.
 9. A system comprising: a processor; anda memory storing instructions that, when executed by the processor,configure the processor to perform operations comprising: providing, inassociation with designing a room for virtual conferencing, an interfacefor setting parameter values to specify that at least one of a firstelement or a second element in the room is movable during virtualconferencing, that a decrease in distance in pixels between the firstelement and second element is to increase a property value of the secondelement during virtual conferencing, and that an increase in distance inpixels between the first element and the second element is to decreasethe property value of the second element during virtual conferencing;receiving, via the interface, user input setting the parameter values;providing a virtual conference between plural participants within theroom, the room including the first element and the second element;detecting movement of at least one of the first element or the secondelement during the virtual conference; increasing, when the movementdecreases the distance in pixels between the first element and thesecond element, the property value of the second element; decreasing,when the movement increases the distance in pixels between the firstelement and the second element, the property value of the secondelement; and providing for updated presentation of the second elementbased on the increasing or decreasing of the property value of thesecond element.
 10. The system of claim 9, the operations furthercomprising: storing, prior to providing the virtual conference, theparameter values in association with the first element.
 11. The systemof claim 9, the operations further comprising: providing, in associationwith designing the room, an interface element for selecting the secondelement from among plural elements.
 12. The system of claim 9, whereinthe property value corresponds to blur, brightness, contrast,saturation, red level, green level, blue level, x-axis rotation, y-axisrotation, z-axis rotation, x-axis scaling, y-axis scaling, participantaudio volume, media volume, opacity, x-axis position, y-axis position,or video seek percentage for the second element.
 13. The system of claim9, wherein the parameter values indicate whether the distance in pixelsbetween the first element and the second element is in a radial, x-axisor y-axis manner.
 14. The system of claim 9, wherein the parametervalues indicate a range in pixels within which the distance in pixelsbetween the first element and the second element causes the propertyvalue to increase or decrease, and an edge value, center value anddistance exponent associated with the range.
 15. The system of claim 9,wherein designing the room is associated with a design interface fordesigning rooms for virtual conferencing, and wherein providing thevirtual conference is associated with a navigation interface fornavigating between the rooms.
 16. The system of claim 9, the operationsfurther comprising: providing, for each of the plural participants,display of a participant video element which corresponds to theparticipant and which includes a video feed for the participant.
 17. Anon-transitory computer-readable storage medium, the computer-readablestorage medium including instructions that when executed by a computer,cause the computer to perform operations comprising: providing, inassociation with designing a room for virtual conferencing, an interfacefor setting parameter values to specify that at least one of a firstelement or a second element in the room is movable during virtualconferencing, that a decrease in distance in pixels between the firstelement and second element is to increase a property value of the secondelement during virtual conferencing, and that an increase in distance inpixels between the first element and the second element is to decreasethe property value of the second element during virtual conferencing;receiving, via the interface, user input setting the parameter values;providing a virtual conference between plural participants within theroom, the room including the first element and the second element;detecting movement of at least one of the first element or the secondelement during the virtual conference; increasing, when the movementdecreases the distance in pixels between the first element and thesecond element, the property value of the second element; decreasing,when the movement increases the distance in pixels between the firstelement and the second element, the property value of the secondelement; and providing for updated presentation of the second elementbased on the increasing or decreasing of the property value of thesecond element.
 18. The computer-readable medium of claim 17, theoperations further comprising: storing, prior to providing the virtualconference, the parameter values in association with the first element.19. The computer-readable medium of claim 17, the operations furthercomprising: providing, in association with designing the room, aninterface element for selecting the second element from among pluralelements.
 20. The computer-readable medium of claim 17, wherein theproperty value corresponds to blur, brightness, contrast, saturation,red level, green level, blue level, x-axis rotation, y-axis rotation,z-axis rotation, x-axis scaling, y-axis scaling, participant audiovolume, media volume, opacity, x-axis position, y-axis position, orvideo seek percentage for the second element.